<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>04_async 和 await</title>
</head>
<body>
    <script>
    //     async 和 await 异步问题的终极(最佳)解决方案,并且要配个Promise 使用  
    /*      1.异步代码交给Promise 
            2.在Async 函数中配合Await,用同步的方式编写异步的代码(串行)
      */       
    //          需求 :发送ajax请求
    //          1秒之后,打印1,
    //          1打印出来后,2秒后,打印2
    //          2打印出来,3秒后,打印3
    //   

    //1. 封装延迟打印的函数
    let print = (data,delayTime)=>{
               return new Promise(resolve =>{
                   setTimeout(()=>{
                        resolve(data)
                   },delayTime * 1000)
               })
           }

    // async 表示该函数的是一个异步函数 //await 等待一个异步值到来
     doSomething()
     async function doSomething(){
         let data1 = await print(1,1) 
         console.log(data1);
         let data2 = await print(2,2)
         console.log(data2);
         let data3 = await print(3,3)
         console.log(data3);
             //print函数返回的是一个Promise实例  await后面跟着Promise实例 返回值就是resolve的值  将结果赋值给一个变量 这个变量就是resolve里传的参数data里的值
         }
    </script>
</body>
</html>